<?php
declare (strict_types = 1);

namespace app\command;

use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions;

class generateQRcode extends Command
{
    protected function configure()
    {
        // 指令配置
        $this->setName('generateQRcode')->setDescription('批量生成二维码');
    }

    protected function execute(Input $input, Output $output){
        // 指令输出
        // 设置二维码内容
        $data = 'https://darong.1415926.com.cn/#/pages/exhibit/detail?exhibitId=1';
        // 设置输出路径和文件名
        $outputFile = public_path() . '/uploads/qrcode.png';
        $output->writeln($outputFile);
        // 创建QRCode实例，并设置相关选项（可选）
        $this->setQRcode($data, $outputFile);
        // 可以选择返回一个响应，告知用户二维码已生成或直接显示图片
        $output->writeln('二维码已生成: ' . $outputFile);
    }

    function setQRcode($data, $outputFile){
        $options = new QROptions([
            'eccLevel' => QRCode::ECC_L, // 容错率，L、M、Q、H
            'scale' => 10, // 控制二维码点的大小(1-20)，值越大图片尺寸越大
            // 最终图片尺寸 ≈ (二维码模块数 × scale) + 边距
            // 例如：版本7的二维码(45×45模块) scale=10 → 约450×450像素
            'quietzoneSize'=>1,
            'outputType' => QRCode::OUTPUT_IMAGE_PNG, // 输出类型，支持PNG、SVG等
            'imageBase64' => false, // 是否输出base64编码的字符串（不用于此例）
            'imageTransparent' => false, // 禁用透明背景
            'bgColor' => [255, 255, 255] // 设置白色背景(RGB)
        ]);
        $qrCode = new QRCode($options);
        $qrCode->render($data, $outputFile);
    }
}
